{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        " # Simple Multiple Linear Regression"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# fix_yahoo_finance is used to fetch data \n",
        "import fix_yahoo_finance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# input\n",
        "symbol = 'AMD'\n",
        "start = '2007-01-01'\n",
        "end = '2018-12-31'\n",
        "\n",
        "# Read data \n",
        "dataset = yf.download(symbol,start,end)\n",
        "\n",
        "# View Columns\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%***********************]  1 of 1 downloaded\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 2,
          "data": {
            "text/plain": [
              "                 Open       High        Low      Close  Adj Close    Volume\n",
              "Date                                                                       \n",
              "2007-01-03  20.080000  20.400000  19.350000  19.520000  19.520000  28350300\n",
              "2007-01-04  19.660000  19.860001  19.320000  19.790001  19.790001  23652500\n",
              "2007-01-05  19.540001  19.910000  19.540001  19.709999  19.709999  15902400\n",
              "2007-01-08  19.709999  19.860001  19.370001  19.469999  19.469999  15814800\n",
              "2007-01-09  19.450001  19.709999  19.370001  19.650000  19.650000  14494200"
            ],
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Adj Close</th>\n",
              "      <th>Volume</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Date</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>2007-01-03</th>\n",
              "      <td>20.080000</td>\n",
              "      <td>20.400000</td>\n",
              "      <td>19.350000</td>\n",
              "      <td>19.520000</td>\n",
              "      <td>19.520000</td>\n",
              "      <td>28350300</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2007-01-04</th>\n",
              "      <td>19.660000</td>\n",
              "      <td>19.860001</td>\n",
              "      <td>19.320000</td>\n",
              "      <td>19.790001</td>\n",
              "      <td>19.790001</td>\n",
              "      <td>23652500</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2007-01-05</th>\n",
              "      <td>19.540001</td>\n",
              "      <td>19.910000</td>\n",
              "      <td>19.540001</td>\n",
              "      <td>19.709999</td>\n",
              "      <td>19.709999</td>\n",
              "      <td>15902400</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2007-01-08</th>\n",
              "      <td>19.709999</td>\n",
              "      <td>19.860001</td>\n",
              "      <td>19.370001</td>\n",
              "      <td>19.469999</td>\n",
              "      <td>19.469999</td>\n",
              "      <td>15814800</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2007-01-09</th>\n",
              "      <td>19.450001</td>\n",
              "      <td>19.709999</td>\n",
              "      <td>19.370001</td>\n",
              "      <td>19.650000</td>\n",
              "      <td>19.650000</td>\n",
              "      <td>14494200</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset.tail()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 3,
          "data": {
            "text/plain": [
              "                 Open       High        Low      Close  Adj Close     Volume\n",
              "Date                                                                        \n",
              "2018-12-24  16.520000  17.219999  16.370001  16.650000  16.650000   62933100\n",
              "2018-12-26  16.879999  17.910000  16.030001  17.900000  17.900000  108811800\n",
              "2018-12-27  17.430000  17.740000  16.440001  17.490000  17.490000  111373000\n",
              "2018-12-28  17.530001  18.309999  17.139999  17.820000  17.820000  109214400\n",
              "2018-12-31  18.150000  18.510000  17.850000  18.459999  18.459999   84732200"
            ],
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Adj Close</th>\n",
              "      <th>Volume</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Date</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>2018-12-24</th>\n",
              "      <td>16.520000</td>\n",
              "      <td>17.219999</td>\n",
              "      <td>16.370001</td>\n",
              "      <td>16.650000</td>\n",
              "      <td>16.650000</td>\n",
              "      <td>62933100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2018-12-26</th>\n",
              "      <td>16.879999</td>\n",
              "      <td>17.910000</td>\n",
              "      <td>16.030001</td>\n",
              "      <td>17.900000</td>\n",
              "      <td>17.900000</td>\n",
              "      <td>108811800</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2018-12-27</th>\n",
              "      <td>17.430000</td>\n",
              "      <td>17.740000</td>\n",
              "      <td>16.440001</td>\n",
              "      <td>17.490000</td>\n",
              "      <td>17.490000</td>\n",
              "      <td>111373000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2018-12-28</th>\n",
              "      <td>17.530001</td>\n",
              "      <td>18.309999</td>\n",
              "      <td>17.139999</td>\n",
              "      <td>17.820000</td>\n",
              "      <td>17.820000</td>\n",
              "      <td>109214400</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2018-12-31</th>\n",
              "      <td>18.150000</td>\n",
              "      <td>18.510000</td>\n",
              "      <td>17.850000</td>\n",
              "      <td>18.459999</td>\n",
              "      <td>18.459999</td>\n",
              "      <td>84732200</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 3,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "### Multiple Features"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "X = dataset.drop(['Adj Close','Close'], axis=1)\n",
        "y = dataset[['Adj Close']]"
      ],
      "outputs": [],
      "execution_count": 4,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.linear_model import LinearRegression\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.metrics import mean_squared_error, r2_score\n",
        "\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=1)"
      ],
      "outputs": [],
      "execution_count": 5,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lr = LinearRegression()\n",
        "lr.fit(X_train[['Open']], y_train)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 6,
          "data": {
            "text/plain": [
              "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
              "         normalize=False)"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 6,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred = lr.predict(X_test[['Open']])\n",
        "print(\"Mean squared error: %.4f\" % mean_squared_error(y_test, y_pred))\n",
        "print('R²: %.4f' % r2_score(y_test, y_pred))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Mean squared error: 0.0486\n",
            "R²: 0.9977\n"
          ]
        }
      ],
      "execution_count": 7,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print('Slope: ',lr.coef_)\n",
        "print('Intercept: ',lr.intercept_)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Slope:  [[ 0.99710284]]\n",
            "Intercept:  [ 0.01299775]\n"
          ]
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lr = LinearRegression()\n",
        "lr.fit(X_train, y_train)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 9,
          "data": {
            "text/plain": [
              "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
              "         normalize=False)"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 9,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print('Slope: ',lr.coef_)\n",
        "print('Intercept: ',lr.intercept_)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Slope:  [[ -6.29642205e-01   8.05689978e-01   8.25362832e-01  -6.69728634e-11]]\n",
            "Intercept:  [-0.00183821]\n"
          ]
        }
      ],
      "execution_count": 10,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred = lr.predict(X_test)\n",
        "print(\"Mean squared error: %.4f\" % mean_squared_error(y_test, y_pred))\n",
        "print('R²: %.4f' % r2_score(y_test, y_pred))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Mean squared error: 0.0131\n",
            "R²: 0.9994\n"
          ]
        }
      ],
      "execution_count": 11,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fig, ax = plt.subplots()\n",
        "ax.scatter(y_test, y_pred)\n",
        "ax.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=4)\n",
        "ax.set_title('Multiple Linear Regression')\n",
        "ax.set_xlabel('Measured')\n",
        "ax.set_ylabel('Predicted')\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": [
              "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\n"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 12,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn import metrics\n",
        "\n",
        "print(\"Explained Variance Score: \", metrics.explained_variance_score(y_test, y_pred))\n",
        "print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred))\n",
        "print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))\n",
        "print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Explained Variance Score:  0.999386585233\n",
            "Mean Absolute Error: 0.0638645212984\n",
            "Mean Squared Error: 0.0130646322213\n",
            "Root Mean Squared Error: 0.114300622139\n"
          ]
        }
      ],
      "execution_count": 13,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "nbconvert_exporter": "python",
      "name": "python",
      "codemirror_mode": {
        "version": 3,
        "name": "ipython"
      },
      "version": "3.5.5",
      "pygments_lexer": "ipython3"
    },
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "nteract": {
      "version": "0.14.5"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}